/*
fun
bar
funconst
bar
 *
 */

#include <iostream>
using namespace std;
class A{
	public:
		A(int mm=0, int nn=0):m(mm),n(nn){}
		void fun(void){   //void func(A * this)
			cout <<__func__<< endl;
		}
		void bar(void) const{
			cout << __func__ << endl;
		}
		void fun(void) const {  //void func(const A *this)
			cout <<__func__<< "const" <<endl;
			m++;
			//n++;//语法错误
		}
	private:
		mutable int m;
		int n;
};
int main(void){

	A a;
	//优先调用非常函数
	a.fun();
	a.bar();
	
	const A b;
	//只能调用常函数
	b.fun();
	b.bar();
	return 0;
}
